package com.powerbank.common.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 租借订单实体类
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("rental_order")
public class RentalOrder {

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 订单号
     */
    @TableField("order_no")
    private String orderNo;

    /**
     * 用户ID
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 设备ID
     */
    @TableField("device_id")
    private Long deviceId;

    /**
     * 充电宝ID
     */
    @TableField("powerbank_id")
    private Long powerbankId;

    /**
     * 插槽号
     */
    @TableField("slot_no")
    private Integer slotNo;

    /**
     * 租借点位ID
     */
    @TableField("rental_location_id")
    private Long rentalLocationId;

    /**
     * 归还点位ID
     */
    @TableField("return_location_id")
    private Long returnLocationId;

    /**
     * 归还设备ID
     */
    @TableField("return_device_id")
    private Long returnDeviceId;

    /**
     * 归还插槽号
     */
    @TableField("return_slot_no")
    private Integer returnSlotNo;

    /**
     * 租借时间
     */
    @TableField("rental_time")
    private LocalDateTime rentalTime;

    /**
     * 归还时间
     */
    @TableField("return_time")
    private LocalDateTime returnTime;

    /**
     * 计划归还时间
     */
    @TableField("planned_return_time")
    private LocalDateTime plannedReturnTime;

    /**
     * 实际使用时长（分钟）
     */
    @TableField("actual_duration")
    private Integer actualDuration;

    /**
     * 押金金额
     */
    @TableField("deposit_amount")
    private BigDecimal depositAmount;

    /**
     * 总费用
     */
    @TableField("total_amount")
    private BigDecimal totalAmount;

    /**
     * 优惠金额
     */
    @TableField("discount_amount")
    private BigDecimal discountAmount;

    /**
     * 实际支付金额
     */
    @TableField("actual_amount")
    private BigDecimal actualAmount;

    /**
     * 退款金额
     */
    @TableField("refund_amount")
    private BigDecimal refundAmount;

    /**
     * 使用的优惠券ID
     */
    @TableField("coupon_id")
    private Long couponId;

    /**
     * 订单状态：1-租借中，2-已归还，3-超时未还，4-异常，5-已取消
     */
    @TableField("order_status")
    private Integer orderStatus;

    /**
     * 支付状态：0-未支付，1-已支付，2-部分退款，3-全额退款
     */
    @TableField("payment_status")
    private Integer paymentStatus;

    /**
     * 支付方式：WECHAT,ALIPAY,WALLET,BANK_CARD
     */
    @TableField("payment_method")
    private String paymentMethod;

    /**
     * 备注
     */
    @TableField("remark")
    private String remark;

    /**
     * 创建时间
     */
    @TableField(value = "created_time", fill = FieldFill.INSERT)
    private LocalDateTime createdTime;

    /**
     * 更新时间
     */
    @TableField(value = "updated_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedTime;

    /**
     * 是否删除：0-否，1-是
     */
    @TableLogic
    @TableField("deleted")
    private Integer deleted;
}